package com.kakame.codenews.front.article.service;

import java.util.List;

import com.kakame.codenews.base.web.entity.Page;
import com.kakame.codenews.base.web.fast.mapping.common.Article;
import com.kakame.codenews.base.web.fast.mapping.nexus.ArticleComment;

/**
 * 前台新增文章业务层
 * @author 何家明 2018年7月4日 下午9:40:58
 */
public interface FrontArticleService {

	/**
	 * 新增文章
	 * @author 何家明 2018年7月4日 下午9:43:52
	 * @param article
	 */
	void add(Article article);

	/**
	 * 文章分页
	 * @author 何家明 2018年7月4日 下午10:04:42
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	Page<Article> page(Integer pageNo, Integer pageSize);

	/**
	 * 根据主键获取文章
	 * @author 何家明 2018年7月4日 下午10:47:27
	 * @param articleId
	 * @return
	 */
	Article get(String articleId);

	/**
	 * <pre>
	 * <b>desc:</b> 修改文章 
	 * <b>auth:</b> ex-hejm
	 * <b>date:</b> 2018年7月19日 下午3:35:46
	 * </pre>
	 * @param article
	 * @return
	 */
    int update(Article article);

    /**
     * <pre>
     * <b>desc:</b> 删除文章 
     * <b>auth:</b> ex-hejm
     * <b>date:</b> 2018年7月30日 下午4:32:04
     * </pre>
     * @param articleId
     * @return
     */
    int delete(String articleId);

    /**
     * <pre>
     * <b>desc:</b> 根据文章id查找全部的子评论，不包括孙子 
     * <b>auth:</b> ex-hejm
     * <b>date:</b> 2018年7月31日 下午3:31:13
     * </pre>
     * @param articleId
     * @return
     */
    List<ArticleComment> listChildComments(String articleId);

    /**
     * <pre>
     * <b>desc:</b> 获取文章具体评论下的直属回复 
     * <b>auth:</b> ex-hejm
     * <b>date:</b> 2018年8月1日 下午3:47:02
     * </pre>
     * @param commentParentId
     * @return
     */
    List<ArticleComment> listCommentRedirectReply(String commentParentId);

    /**
     * <pre>
     * <b>desc:</b> 插入评论 
     * <b>auth:</b> ex-hejm
     * <b>date:</b> 2018年8月2日 上午9:48:06
     * </pre>
     * @param build
     */
    Integer insertComment(ArticleComment build);
	
}
